package com.xkcyy.one.controller;

import com.xkcyy.one.common.Result;
import com.xkcyy.one.entity.Agent;
import com.xkcyy.one.service.AgentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 智能体控制器
 */
@RestController
@RequestMapping("/api/agents")
public class AgentController {
    
    private final AgentService agentService;
    
    @Autowired
    public AgentController(AgentService agentService) {
        this.agentService = agentService;
    }
    
    /**
     * 获取所有智能体
     *
     * @return 智能体列表
     */
    @GetMapping("/list")
    public Result<List<Agent>> getAllAgents() {
        return Result.success(agentService.getAllAgents());
    }
    
    /**
     * 根据状态获取智能体列表
     *
     * @param status 状态
     * @return 智能体列表
     */
    @GetMapping("/status")
    public Result<List<Agent>> getAgentsByStatus(@RequestParam String status) {
        return Result.success(agentService.getAgentsByStatus(status));
    }
    
    /**
     * 根据ID获取智能体
     *
     * @param id 智能体ID
     * @return 智能体信息
     */
    @GetMapping("/get")
    public Result<Agent> getAgentById(@RequestParam Long id) {
        return Result.success(agentService.getAgentById(id));
    }
    
    /**
     * 创建智能体
     *
     * @param agent 智能体信息
     * @return 创建后的智能体信息
     */
    @PostMapping("/create")
    public Result<Agent> createAgent(@RequestBody Agent agent) {
        return Result.success(agentService.createAgent(agent));
    }
    
    /**
     * 更新智能体
     *
     * @param id    智能体ID
     * @param agent 智能体信息
     * @return 更新后的智能体信息
     */
    @PutMapping("/update")
    public Result<Agent> updateAgent(@RequestParam Long id, @RequestBody Agent agent) {
        agent.setId(id);
        return Result.success(agentService.updateAgent(agent));
    }
    
    /**
     * 删除智能体
     *
     * @param id 智能体ID
     * @return 操作结果
     */
    @DeleteMapping("/delete")
    public Result<Void> deleteAgent(@RequestParam Long id) {
        agentService.deleteAgent(id);
        return Result.success();
    }
    
    /**
     * 更新智能体状态
     *
     * @param id     智能体ID
     * @param status 新状态
     * @return 更新后的智能体信息
     */
    @PutMapping("/status")
    public Result<Agent> updateAgentStatus(@RequestParam Long id, @RequestParam String status) {
        return Result.success(agentService.updateAgentStatus(id, status));
    }
    
    /**
     * 更新智能体系统提示词
     *
     * @param id           智能体ID
     * @param systemPrompt 新系统提示词
     * @return 更新后的智能体信息
     */
    @PutMapping("/prompt")
    public Result<Agent> updateAgentSystemPrompt(@RequestParam Long id, @RequestBody String systemPrompt) {
        return Result.success(agentService.updateAgentSystemPrompt(id, systemPrompt));
    }
} 